// 这不是和第一题差不多吗？
// 贪心
// 这题要求互不重叠，所以不存在公用的情况
// 利用反证法可以证明，当每个问号都和前一个数一样时，答案最多
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int N = 1000010;

int main()
{
    string s;
    cin >> s;
    int ans = 0;
    for(int i = 0; i < s.size() - 1; ++i)
    {
        if(s[i] == s[i + 1] || s[i + 1] == '?' || s[i] == '?')
        {
            ++ans;
            ++i;
        }
    }
    cout << ans << endl;
    return 0;
}
